{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "name": "fer2013.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "machine_shape": "hm",
      "include_colab_link": true
    },
    "kernelspec": {
      "display_name": "Environment (conda_tensorflow_p36)",
      "language": "python",
      "name": "conda_tensorflow_p36"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.6.5"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/amilkh/cs230-fer/blob/transfer-learning/Final-SeNet50.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "gwdg7Sv3XBaP",
        "outputId": "898c8cb4-3e8b-4f63-a2da-fc392f6d08cc",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 527
        }
      },
      "source": [
        "%tensorflow_version 1.x\n",
        "!pip install keras-vggface\n",
        "!pip install scikit-image\n",
        "!pip install pydot"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting keras-vggface\n",
            "  Downloading https://files.pythonhosted.org/packages/2f/7d/5f0319ebdc09ac1a2272364fa9583f5067b6f8aff93fbbf8835d81cbaad7/keras_vggface-0.6-py3-none-any.whl\n",
            "Requirement already satisfied: numpy>=1.9.1 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.18.1)\n",
            "Requirement already satisfied: scipy>=0.14 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.4.1)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (3.13)\n",
            "Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (2.8.0)\n",
            "Requirement already satisfied: pillow in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (7.0.0)\n",
            "Requirement already satisfied: keras in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (2.2.5)\n",
            "Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.12.0)\n",
            "Requirement already satisfied: keras-preprocessing>=1.1.0 in /usr/local/lib/python3.6/dist-packages (from keras->keras-vggface) (1.1.0)\n",
            "Requirement already satisfied: keras-applications>=1.0.8 in /usr/local/lib/python3.6/dist-packages (from keras->keras-vggface) (1.0.8)\n",
            "Installing collected packages: keras-vggface\n",
            "Successfully installed keras-vggface-0.6\n",
            "Requirement already satisfied: scikit-image in /usr/local/lib/python3.6/dist-packages (0.16.2)\n",
            "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4)\n",
            "Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4.1)\n",
            "Requirement already satisfied: pillow>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (7.0.0)\n",
            "Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.4.1)\n",
            "Requirement already satisfied: PyWavelets>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.1.1)\n",
            "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (3.2.0)\n",
            "Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from networkx>=2.0->scikit-image) (4.4.2)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from imageio>=2.3.0->scikit-image) (1.18.1)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (0.10.0)\n",
            "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.8.1)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.1.0)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.4.6)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from cycler>=0.10->matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.12.0)\n",
            "Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from kiwisolver>=1.0.1->matplotlib!=3.0.0,>=2.0.0->scikit-image) (45.2.0)\n",
            "Requirement already satisfied: pydot in /usr/local/lib/python3.6/dist-packages (1.3.0)\n",
            "Requirement already satisfied: pyparsing>=2.1.4 in /usr/local/lib/python3.6/dist-packages (from pydot) (2.4.6)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "2nz38mJZXN_P",
        "outputId": "20e85bee-7622-43fa-c448-c31cb819fbd0",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "\n",
        "import tensorflow as tf\n",
        "from tensorflow.keras.layers import *\n",
        "from tensorflow.python.lib.io import file_io\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "import keras\n",
        "from keras import backend as K\n",
        "from keras.callbacks import ModelCheckpoint, EarlyStopping\n",
        "from keras.models import load_model\n",
        "from keras.preprocessing.image import ImageDataGenerator\n",
        "from keras_vggface.vggface import VGGFace\n",
        "from keras.utils import plot_model\n",
        "from sklearn.metrics import *\n",
        "from keras.engine import Model\n",
        "from keras.layers import Input, Flatten, Dense, Activation, Conv2D, MaxPool2D, BatchNormalization, Dropout, MaxPooling2D\n",
        "import skimage\n",
        "from skimage.transform import rescale, resize\n",
        "\n",
        "import pydot"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow backend.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1fZczU8lGkX-",
        "colab_type": "code",
        "outputId": "d9e5dcea-c0be-4f4c-99b4-4ce966c3ea93",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 122
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n",
            "\n",
            "Enter your authorization code:\n",
            "··········\n",
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "nUcd6yIGduUW",
        "outputId": "1bd89817-9058-4050-fb7f-5b7071f4c9b8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "print(tf.__version__)\n",
        "print(keras.__version__)"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "1.15.0\n",
            "2.2.5\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v60q28mDHnN9",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "EPOCHS = 100\n",
        "BS = 128\n",
        "DROPOUT_RATE = 0.5\n",
        "FROZEN_LAYER_NUM = 201\n",
        "\n",
        "ADAM_LEARNING_RATE = 0.001\n",
        "SGD_LEARNING_RATE = 0.01\n",
        "SGD_DECAY = 0.0001\n",
        "\n",
        "Resize_pixelsize = 197"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "itKZtFV0F7b1",
        "colab_type": "code",
        "outputId": "e03b20a2-6738-4c26-b216-074a9f8df5fa",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 632
        }
      },
      "source": [
        "vgg_notop = VGGFace(model='senet50', include_top=False, input_shape=(Resize_pixelsize, Resize_pixelsize, 3), pooling='avg')\n",
        "last_layer = vgg_notop.get_layer('avg_pool').output\n",
        "x = Flatten(name='flatten')(last_layer)\n",
        "x = Dropout(DROPOUT_RATE)(x)\n",
        "x = Dense(4096, activation='relu', name='fc6')(x)\n",
        "x = Dropout(DROPOUT_RATE)(x)\n",
        "x = Dense(1024, activation='relu', name='fc7')(x)\n",
        "x = Dropout(DROPOUT_RATE)(x)\n",
        "# l=0\n",
        "# for layer in vgg_notop.layers:\n",
        "#     print(layer,\"[\"+str(l)+\"]\")\n",
        "#     l=l+1\n",
        "\n",
        "batch_norm_indices = [2, 6, 9, 12, 21, 25, 28, 31, 42, 45, 48, 59, 62, 65, 74, 78, 81, 84, 95, 98, 101, 112, 115, 118, 129, 132, 135, 144, 148, 151, 154, 165, 168, 171, 182, 185, 188, 199, 202, 205, 216, 219, 222, 233, 236, 239, 248, 252, 255, 258, 269, 272, 275]    \n",
        "for i in range(FROZEN_LAYER_NUM):\n",
        "    if i not in batch_norm_indices:\n",
        "        vgg_notop.layers[i].trainable = False\n",
        "# print('vgg layer 2 is trainable: ' + str(vgg_notop.layers[2].trainable))\n",
        "# print('vgg layer 3 is trainable: ' + str(vgg_notop.layers[3].trainable))\n",
        "\n",
        "out = Dense(7, activation='softmax', name='classifier')(x)\n",
        "\n",
        "model = Model(vgg_notop.input, out)\n",
        "\n",
        "\n",
        "optim = keras.optimizers.Adam(lr=ADAM_LEARNING_RATE, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)\n",
        "#optim = keras.optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)\n",
        "sgd = keras.optimizers.SGD(lr=SGD_LEARNING_RATE, momentum=0.9, decay=SGD_DECAY, nesterov=True)\n",
        "rlrop = keras.callbacks.ReduceLROnPlateau(monitor='val_acc',mode='max',factor=0.5, patience=10, min_lr=0.00001, verbose=1)\n",
        "\n",
        "model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])\n",
        "# plot_model(model, to_file='model2.png', show_shapes=True)"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:66: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:541: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4432: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:197: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:203: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:207: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:216: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:223: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:2041: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:148: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4267: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4271: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
            "\n",
            "Downloading data from https://github.com/rcmalli/keras-vggface/releases/download/v2.0/rcmalli_vggface_tf_notop_senet50.h5\n",
            "104947712/104944616 [==============================] - 2s 0us/step\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3733: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/optimizers.py:793: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3576: The name tf.log is deprecated. Please use tf.math.log instead.\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v0mXUNZB-yI5",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf train; mkdir train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/emotion.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/facesdb.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/train.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/googlesearch.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/googleset.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/jaffe.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/umea.zip' -d train"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TUuN9SLX_Qvl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf dev; mkdir dev\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-public.zip' -d dev\n",
        "! rm -rf test; mkdir test\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-private.zip' -d test"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "egSWDlktpwwQ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 136
        },
        "outputId": "6e23e651-d3d0-4800-d044-bb4310698f13"
      },
      "source": [
        "%%bash\n",
        "root='/content/test/'\n",
        "IFS=$(echo -en \"\\n\\b\")\n",
        "(for dir in $(ls -1 \"$root\")\n",
        "    do printf \"$dir: \" && ls -i \"$root$dir\" | wc -l\n",
        " done)"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0 angry: 491\n",
            "1 disgust: 55\n",
            "2 fear: 528\n",
            "3 happy: 879\n",
            "4 sad: 594\n",
            "5 surprise: 416\n",
            "6 neutral: 626\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "560jefnZ_Cyq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
        "\n",
        "def get_datagen(dataset, aug=False):\n",
        "    if aug:\n",
        "        datagen = ImageDataGenerator(\n",
        "                            rescale=1./255,\n",
        "                            featurewise_center=False,\n",
        "                            featurewise_std_normalization=False,\n",
        "                            rotation_range=10,\n",
        "                            width_shift_range=0.1,\n",
        "                            height_shift_range=0.1,\n",
        "                            zoom_range=0.1,\n",
        "                            horizontal_flip=True)\n",
        "    else:\n",
        "        datagen = ImageDataGenerator(rescale=1./255)\n",
        "\n",
        "    return datagen.flow_from_directory(\n",
        "            dataset,\n",
        "            target_size=(197, 197),\n",
        "            color_mode='rgb',\n",
        "            shuffle = True,\n",
        "            class_mode='categorical',\n",
        "            batch_size=BS)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4aQAGQP5_Gpl",
        "colab_type": "code",
        "outputId": "39926d21-b2a1-4280-ba59-0e3afe7ef03e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 102
        }
      },
      "source": [
        "train_generator  = get_datagen('/content/train', True)\n",
        "dev_generator    = get_datagen('/content/dev')\n",
        "test_generator  = get_datagen('/content/test')\n"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py:173: UserWarning: Using \".tiff\" files with multiple bands will cause distortion. Please verify your output.\n",
            "  warnings.warn('Using \".tiff\" files with multiple bands '\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Found 30452 images belonging to 7 classes.\n",
            "Found 3589 images belonging to 7 classes.\n",
            "Found 3589 images belonging to 7 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "pLISdlaStbUn",
        "outputId": "c4f6da09-20e4-4b04-d2cb-efccdda0d88e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "history = model.fit_generator(\n",
        "    generator = train_generator,\n",
        "    validation_data=dev_generator, \n",
        "    #steps_per_epoch=28709// BS,\n",
        "    #validation_steps=3509 // BS,\n",
        "    shuffle=True,\n",
        "    epochs=100,\n",
        "    callbacks=[rlrop],\n",
        "    use_multiprocessing=True,\n",
        ") "
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From /tensorflow-1.15.0/python3.6/tensorflow_core/python/ops/math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1033: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1020: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
            "\n",
            "Epoch 1/100\n",
            "238/238 [==============================] - 309s 1s/step - loss: 1.8741 - acc: 0.2840 - val_loss: 1.8226 - val_acc: 0.3435\n",
            "Epoch 2/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 1.4471 - acc: 0.4375 - val_loss: 1.3253 - val_acc: 0.4948\n",
            "Epoch 3/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 1.2316 - acc: 0.5125 - val_loss: 1.1254 - val_acc: 0.5793\n",
            "Epoch 4/100\n",
            "238/238 [==============================] - 292s 1s/step - loss: 1.0696 - acc: 0.6065 - val_loss: 1.1040 - val_acc: 0.6057\n",
            "Epoch 5/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.9776 - acc: 0.6420 - val_loss: 1.0684 - val_acc: 0.6188\n",
            "Epoch 6/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.9207 - acc: 0.6650 - val_loss: 1.0465 - val_acc: 0.6135\n",
            "Epoch 7/100\n",
            "238/238 [==============================] - 293s 1s/step - loss: 0.8839 - acc: 0.6780 - val_loss: 0.9908 - val_acc: 0.6383\n",
            "Epoch 8/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.8436 - acc: 0.6939 - val_loss: 0.9639 - val_acc: 0.6537\n",
            "Epoch 9/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.8109 - acc: 0.7032 - val_loss: 0.9058 - val_acc: 0.6701\n",
            "Epoch 10/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.7801 - acc: 0.7194 - val_loss: 0.9678 - val_acc: 0.6517\n",
            "Epoch 11/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.7539 - acc: 0.7288 - val_loss: 0.9729 - val_acc: 0.6631\n",
            "Epoch 12/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.7304 - acc: 0.7353 - val_loss: 1.0328 - val_acc: 0.6339\n",
            "Epoch 13/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.7068 - acc: 0.7463 - val_loss: 0.9377 - val_acc: 0.6695\n",
            "Epoch 14/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.6823 - acc: 0.7533 - val_loss: 0.9383 - val_acc: 0.6743\n",
            "Epoch 15/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.6639 - acc: 0.7608 - val_loss: 0.8806 - val_acc: 0.6952\n",
            "Epoch 16/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.6380 - acc: 0.7720 - val_loss: 0.8852 - val_acc: 0.6874\n",
            "Epoch 17/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.6215 - acc: 0.7758 - val_loss: 0.9070 - val_acc: 0.6787\n",
            "Epoch 18/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.5977 - acc: 0.7843 - val_loss: 0.9309 - val_acc: 0.6799\n",
            "Epoch 19/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.5724 - acc: 0.7959 - val_loss: 0.9592 - val_acc: 0.6818\n",
            "Epoch 20/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.5563 - acc: 0.8003 - val_loss: 0.9386 - val_acc: 0.6963\n",
            "Epoch 21/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.5342 - acc: 0.8080 - val_loss: 0.9030 - val_acc: 0.6996\n",
            "Epoch 22/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.5199 - acc: 0.8161 - val_loss: 0.9116 - val_acc: 0.6991\n",
            "Epoch 23/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.4953 - acc: 0.8235 - val_loss: 1.0249 - val_acc: 0.6721\n",
            "Epoch 24/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.4788 - acc: 0.8311 - val_loss: 1.0976 - val_acc: 0.6698\n",
            "Epoch 25/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.4638 - acc: 0.8358 - val_loss: 1.0257 - val_acc: 0.6768\n",
            "Epoch 26/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.4382 - acc: 0.8442 - val_loss: 1.0300 - val_acc: 0.6918\n",
            "Epoch 27/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.4217 - acc: 0.8497 - val_loss: 1.0381 - val_acc: 0.6807\n",
            "Epoch 28/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.4127 - acc: 0.8519 - val_loss: 0.9972 - val_acc: 0.6885\n",
            "Epoch 29/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.3948 - acc: 0.8603 - val_loss: 1.0567 - val_acc: 0.6924\n",
            "Epoch 30/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.3777 - acc: 0.8645 - val_loss: 1.0673 - val_acc: 0.6999\n",
            "Epoch 31/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.3640 - acc: 0.8710 - val_loss: 1.2573 - val_acc: 0.6486\n",
            "Epoch 32/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.3471 - acc: 0.8778 - val_loss: 1.0282 - val_acc: 0.6971\n",
            "Epoch 33/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.3391 - acc: 0.8810 - val_loss: 1.1366 - val_acc: 0.6977\n",
            "Epoch 34/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.3173 - acc: 0.8888 - val_loss: 1.2153 - val_acc: 0.6879\n",
            "Epoch 35/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.3101 - acc: 0.8896 - val_loss: 1.0622 - val_acc: 0.6927\n",
            "Epoch 36/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.3000 - acc: 0.8943 - val_loss: 1.1708 - val_acc: 0.6902\n",
            "Epoch 37/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.2842 - acc: 0.9024 - val_loss: 1.2906 - val_acc: 0.6885\n",
            "\n",
            "Epoch 38/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.2720 - acc: 0.9035 - val_loss: 1.2999 - val_acc: 0.6776\n",
            "Epoch 39/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.2635 - acc: 0.9072 - val_loss: 1.2563 - val_acc: 0.6868\n",
            "Epoch 40/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.2565 - acc: 0.9106 - val_loss: 1.1673 - val_acc: 0.6871\n",
            "\n",
            "Epoch 00040: ReduceLROnPlateau reducing learning rate to 0.004999999888241291.\n",
            "Epoch 41/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.1979 - acc: 0.9319 - val_loss: 1.2500 - val_acc: 0.7019\n",
            "Epoch 42/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.1730 - acc: 0.9391 - val_loss: 1.4119 - val_acc: 0.7047\n",
            "Epoch 43/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.1609 - acc: 0.9442 - val_loss: 1.4804 - val_acc: 0.7021\n",
            "Epoch 44/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.1549 - acc: 0.9459 - val_loss: 1.5197 - val_acc: 0.6999\n",
            "Epoch 45/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.1491 - acc: 0.9483 - val_loss: 1.3931 - val_acc: 0.7133\n",
            "Epoch 46/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.1412 - acc: 0.9492 - val_loss: 1.4903 - val_acc: 0.6941\n",
            "Epoch 47/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.1316 - acc: 0.9543 - val_loss: 1.4453 - val_acc: 0.7127\n",
            "Epoch 48/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.1342 - acc: 0.9535 - val_loss: 1.4610 - val_acc: 0.7177\n",
            "Epoch 49/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.1279 - acc: 0.9555 - val_loss: 1.5512 - val_acc: 0.7013\n",
            "Epoch 50/100\n",
            "238/238 [==============================] - 293s 1s/step - loss: 0.1241 - acc: 0.9569 - val_loss: 1.5607 - val_acc: 0.7041\n",
            "Epoch 51/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.1163 - acc: 0.9604 - val_loss: 1.6500 - val_acc: 0.7038\n",
            "Epoch 52/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.1239 - acc: 0.9559 - val_loss: 1.5917 - val_acc: 0.6930\n",
            "Epoch 53/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.1110 - acc: 0.9604 - val_loss: 1.5128 - val_acc: 0.6974\n",
            "Epoch 54/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.1079 - acc: 0.9631 - val_loss: 1.6296 - val_acc: 0.7035\n",
            "Epoch 55/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.1085 - acc: 0.9624 - val_loss: 1.6439 - val_acc: 0.6943\n",
            "Epoch 56/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.1052 - acc: 0.9630 - val_loss: 1.5733 - val_acc: 0.7088\n",
            "Epoch 57/100\n",
            "238/238 [==============================] - 300s 1s/step - loss: 0.1012 - acc: 0.9646 - val_loss: 1.6714 - val_acc: 0.7030\n",
            "Epoch 58/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.0985 - acc: 0.9650 - val_loss: 1.6363 - val_acc: 0.6996\n",
            "\n",
            "Epoch 00058: ReduceLROnPlateau reducing learning rate to 0.0024999999441206455.\n",
            "Epoch 59/100\n",
            "238/238 [==============================] - 300s 1s/step - loss: 0.0803 - acc: 0.9719 - val_loss: 1.7202 - val_acc: 0.7133\n",
            "Epoch 60/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.0728 - acc: 0.9748 - val_loss: 1.7580 - val_acc: 0.7133\n",
            "Epoch 61/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0686 - acc: 0.9762 - val_loss: 1.7719 - val_acc: 0.7097\n",
            "Epoch 62/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0704 - acc: 0.9755 - val_loss: 1.8019 - val_acc: 0.7077\n",
            "Epoch 63/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0690 - acc: 0.9755 - val_loss: 1.7823 - val_acc: 0.7044\n",
            "Epoch 64/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.0688 - acc: 0.9752 - val_loss: 1.7739 - val_acc: 0.7116\n",
            "Epoch 65/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0654 - acc: 0.9769 - val_loss: 1.7649 - val_acc: 0.7127\n",
            "Epoch 66/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0634 - acc: 0.9768 - val_loss: 1.7978 - val_acc: 0.7150\n",
            "Epoch 67/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0658 - acc: 0.9778 - val_loss: 1.8685 - val_acc: 0.7111\n",
            "Epoch 68/100\n",
            "238/238 [==============================] - 293s 1s/step - loss: 0.0633 - acc: 0.9769 - val_loss: 1.8268 - val_acc: 0.7069\n",
            "\n",
            "Epoch 00068: ReduceLROnPlateau reducing learning rate to 0.0012499999720603228.\n",
            "Epoch 69/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.0566 - acc: 0.9802 - val_loss: 1.8181 - val_acc: 0.7105\n",
            "Epoch 70/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0548 - acc: 0.9818 - val_loss: 1.8547 - val_acc: 0.7080\n",
            "Epoch 71/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.0499 - acc: 0.9813 - val_loss: 1.8624 - val_acc: 0.7116\n",
            "Epoch 72/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0558 - acc: 0.9805 - val_loss: 1.8594 - val_acc: 0.7055\n",
            "Epoch 73/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0537 - acc: 0.9812 - val_loss: 1.8668 - val_acc: 0.7119\n",
            "Epoch 74/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0523 - acc: 0.9816 - val_loss: 1.8548 - val_acc: 0.7097\n",
            "Epoch 75/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0495 - acc: 0.9821 - val_loss: 1.8881 - val_acc: 0.7108\n",
            "Epoch 76/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0497 - acc: 0.9822 - val_loss: 1.8949 - val_acc: 0.7088\n",
            "Epoch 77/100\n",
            "238/238 [==============================] - 293s 1s/step - loss: 0.0486 - acc: 0.9833 - val_loss: 1.8767 - val_acc: 0.7108\n",
            "Epoch 78/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0482 - acc: 0.9824 - val_loss: 1.8747 - val_acc: 0.7105\n",
            "\n",
            "Epoch 00078: ReduceLROnPlateau reducing learning rate to 0.0006249999860301614.\n",
            "Epoch 79/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0451 - acc: 0.9836 - val_loss: 1.9330 - val_acc: 0.7116\n",
            "Epoch 80/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0438 - acc: 0.9848 - val_loss: 1.9007 - val_acc: 0.7122\n",
            "Epoch 81/100\n",
            "238/238 [==============================] - 298s 1s/step - loss: 0.0454 - acc: 0.9840 - val_loss: 1.9130 - val_acc: 0.7119\n",
            "Epoch 82/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0434 - acc: 0.9846 - val_loss: 1.9163 - val_acc: 0.7111\n",
            "Epoch 83/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0423 - acc: 0.9849 - val_loss: 1.9357 - val_acc: 0.7116\n",
            "Epoch 84/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0433 - acc: 0.9851 - val_loss: 1.9275 - val_acc: 0.7136\n",
            "Epoch 85/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0440 - acc: 0.9838 - val_loss: 1.9437 - val_acc: 0.7136\n",
            "Epoch 86/100\n",
            "238/238 [==============================] - 295s 1s/step - loss: 0.0431 - acc: 0.9843 - val_loss: 1.9451 - val_acc: 0.7122\n",
            "Epoch 87/100\n",
            "238/238 [==============================] - 299s 1s/step - loss: 0.0428 - acc: 0.9846 - val_loss: 1.9480 - val_acc: 0.7152\n",
            "Epoch 88/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0415 - acc: 0.9847 - val_loss: 1.9699 - val_acc: 0.7127\n",
            "\n",
            "Epoch 00088: ReduceLROnPlateau reducing learning rate to 0.0003124999930150807.\n",
            "Epoch 89/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.0414 - acc: 0.9846 - val_loss: 1.9673 - val_acc: 0.7127\n",
            "Epoch 90/100\n",
            "238/238 [==============================] - 297s 1s/step - loss: 0.0402 - acc: 0.9855 - val_loss: 1.9741 - val_acc: 0.7133\n",
            "Epoch 91/100\n",
            "238/238 [==============================] - 296s 1s/step - loss: 0.0390 - acc: 0.9859 - val_loss: 1.9680 - val_acc: 0.7152\n",
            "Epoch 92/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.0408 - acc: 0.9854 - val_loss: 1.9696 - val_acc: 0.7108\n",
            "Epoch 93/100\n",
            "238/238 [==============================] - 294s 1s/step - loss: 0.0389 - acc: 0.9857 - val_loss: 1.9706 - val_acc: 0.7133\n",
            "Epoch 94/100\n",
            "238/238 [==============================] - 291s 1s/step - loss: 0.0378 - acc: 0.9856 - val_loss: 1.9758 - val_acc: 0.7138\n",
            "Epoch 95/100\n",
            "238/238 [==============================] - 288s 1s/step - loss: 0.0403 - acc: 0.9855 - val_loss: 1.9799 - val_acc: 0.7122\n",
            "Epoch 96/100\n",
            "238/238 [==============================] - 289s 1s/step - loss: 0.0397 - acc: 0.9866 - val_loss: 1.9727 - val_acc: 0.7138\n",
            "Epoch 97/100\n",
            "238/238 [==============================] - 290s 1s/step - loss: 0.0387 - acc: 0.9856 - val_loss: 1.9781 - val_acc: 0.7144\n",
            "Epoch 98/100\n",
            "238/238 [==============================] - 291s 1s/step - loss: 0.0392 - acc: 0.9853 - val_loss: 1.9819 - val_acc: 0.7122\n",
            "\n",
            "Epoch 00098: ReduceLROnPlateau reducing learning rate to 0.00015624999650754035.\n",
            "Epoch 99/100\n",
            "238/238 [==============================] - 292s 1s/step - loss: 0.0376 - acc: 0.9859 - val_loss: 1.9878 - val_acc: 0.7136\n",
            "Epoch 100/100\n",
            "238/238 [==============================] - 293s 1s/step - loss: 0.0378 - acc: 0.9853 - val_loss: 1.9902 - val_acc: 0.7147\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JSSv08SHF0bC",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 68
        },
        "outputId": "a7179cab-5f0b-4414-e049-ec5a6ce50967"
      },
      "source": [
        "print('\\n# Evaluate on dev data')\n",
        "results_dev = model.evaluate_generator(dev_generator, 3509 // BS)\n",
        "print('dev loss, dev acc:', results_dev)"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "# Evaluate on dev data\n",
            "dev loss, dev acc: [1.9868577674583152, 0.7144097222222222]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ev4sDYDlOsqk",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 68
        },
        "outputId": "aa5ea7f8-b78d-4459-fd5f-5013490b7ecf"
      },
      "source": [
        "print('\\n# Evaluate on test data')\n",
        "results_test = model.evaluate_generator(test_generator, 3509 // BS)\n",
        "print('test loss, test acc:', results_test)"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "# Evaluate on test data\n",
            "test loss, test acc: [1.8666118206801239, 0.7254050925925926]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "m9f7smhHUQus",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 590
        },
        "outputId": "53028197-9731-4dc2-a13e-2cfaeec79e96"
      },
      "source": [
        "# list all data in history\n",
        "print(history.history.keys())\n",
        "# summarize history for accuracy\n",
        "plt.plot(history.history['acc'])\n",
        "plt.plot(history.history['val_acc'])\n",
        "plt.title('model accuracy')\n",
        "plt.ylabel('accuracy')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()\n",
        "# summarize history for loss\n",
        "plt.plot(history.history['loss'])\n",
        "plt.plot(history.history['val_loss'])\n",
        "plt.title('model loss')\n",
        "plt.ylabel('loss')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "dict_keys(['val_loss', 'val_acc', 'loss', 'acc', 'lr'])\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F-QKHTmJQhi1",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "epoch_str = '-EPOCHS_' + str(EPOCHS)\n",
        "test_acc = 'test_acc_%.3f' % results_test[1]\n",
        "model.save('/content/drive/My Drive/cs230 project/models/final/' + 'SENET50' + epoch_str + test_acc + '.h5')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yJceV2fuFEfQ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}